{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 五次多项式曲线插值法轨迹规划\n",
    "\n",
    "\n",
    "<center><img src=\"https://img-blog.csdnimg.cn/3f4a7ba9ed7042fbab92a5a797361af9.png\" width=40%>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/5f92a5b2e03f4574aff9cf3b59bfc3f5.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 初始参数设置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 场景定义\n",
    "# 换道场景路段与车辆相关参数的定义\n",
    "d = 3.5          # 道路标准宽度\n",
    "len_line = 30    # 直线段长度\n",
    "W = 1.75         # 车宽\n",
    "L = 4.7          # 车长\n",
    "\n",
    "# 车辆换道初始状态与终点期望状态\n",
    "t0 = 0\n",
    "t1 = 3\n",
    "state_t0 = np.array([0, -d/2, 5, 0, 0, 0])  # 分别表示小车的x,y; vx,vy; ax,ay\n",
    "state_t1 = np.array([20, d/2, 5, 0, 0, 0])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 五次多项式轨迹生成"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算A和B两个系数矩阵"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/9880417bc666411f82ee714f315a2dc1.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"计算A和B两个系数矩阵\"\"\"\n",
    "## 把起末两点的横纵向方程统一用矩阵表达\n",
    "X = np.concatenate((np.array([state_t0[i] for i in range(6) if i%2==0]),np.array([state_t1[i] for i in range(6) if i%2==0])))\n",
    "Y = np.concatenate((np.array([state_t0[i] for i in range(6) if i%2!=0]),np.array([state_t1[i] for i in range(6) if i%2!=0])))\n",
    "\n",
    "\n",
    "T = np.matrix([\n",
    "    [t0 ** 5,t0 ** 4,t0 ** 3,t0 ** 2,t0,1],\n",
    "    [5 * t0 ** 4,4 * t0 ** 3,3 * t0 ** 2,2 * t0,1,0],\n",
    "    [20 * t0 ** 3,12 * t0 ** 2,6 * t0,1,0,0],\n",
    "    [t1 ** 5,t1 ** 4,t1 ** 3,t1 ** 2,t1,1],\n",
    "    [5 * t1 ** 4,4 * t1 ** 3,3 * t1 ** 2,2 * t1,1,0],\n",
    "    [20 * t1 ** 3,12 * t1 ** 2,6 * t1,1,0,0]\n",
    "    ])\n",
    "# # 解法1\n",
    "# A=np.linalg.pinv(T)@X\n",
    "# B=np.linalg.pinv(T)@Y.T\n",
    "# A=A.T\n",
    "# B=B.T\n",
    "\n",
    "# 解法2\n",
    "A = np.linalg.solve(T,X)\n",
    "B = np.linalg.solve(T,Y)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将时间从t0到t1离散化，获得离散时刻的轨迹坐标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将时间从t0到t1离散化，获得离散时刻的轨迹坐标\n",
    "t = np.transpose((np.arange(t0,t1+0.05,0.05)))\n",
    "path = np.zeros((len(t),4)) # 1-4列分别存放x,y,vx,vy \n",
    "\n",
    "for i in range(len(t)):\n",
    "    # 纵向位置坐标\n",
    "    path[i,0] = np.array([t[i] ** 5,t[i] ** 4,t[i] ** 3,t[i] ** 2,t[i],1]) @ A  # @符号是矩阵相乘的意思\n",
    "    # 横向位置坐标\n",
    "    path[i,1] = np.array([t[i] ** 5,t[i] ** 4,t[i] ** 3,t[i] ** 2,t[i],1]) @ B\n",
    "    # 纵向速度\n",
    "    path[i,2] = np.array([5 * t[i] ** 4,4 * t[i] ** 3,3 * t[i] ** 2,2 * t[i],1,0]) @ A\n",
    "    # 横向速度\n",
    "    path[i,3] = np.array([5 * t[i] ** 4,4 * t[i] ** 3,3 * t[i] ** 2,2 * t[i],1,0]) @ B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-5., -4.],\n",
       "       [-5.,  4.],\n",
       "       [30.,  4.],\n",
       "       [30., -4.]])"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 场景示意图\n",
    "GreyZone = np.array([[- 5,- d - 0.5],[- 5,d + 0.5],[len_line,d + 0.5],[len_line,- d - 0.5]])\n",
    "GreyZone"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![在这里插入图片描述](https://img-blog.csdnimg.cn/f0acd822cc8c41b4932c97636a0a5076.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:35: UserWarning: Glyph 27178 (\\N{CJK UNIFIED IDEOGRAPH-6A2A}) missing from current font.\n",
      "  plt.savefig(\"横向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:35: UserWarning: Glyph 21521 (\\N{CJK UNIFIED IDEOGRAPH-5411}) missing from current font.\n",
      "  plt.savefig(\"横向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:35: UserWarning: Glyph 36895 (\\N{CJK UNIFIED IDEOGRAPH-901F}) missing from current font.\n",
      "  plt.savefig(\"横向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:35: UserWarning: Glyph 24230 (\\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.\n",
      "  plt.savefig(\"横向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:44: UserWarning: Glyph 32437 (\\N{CJK UNIFIED IDEOGRAPH-7EB5}) missing from current font.\n",
      "  plt.savefig(\"纵向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:44: UserWarning: Glyph 21521 (\\N{CJK UNIFIED IDEOGRAPH-5411}) missing from current font.\n",
      "  plt.savefig(\"纵向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:44: UserWarning: Glyph 36895 (\\N{CJK UNIFIED IDEOGRAPH-901F}) missing from current font.\n",
      "  plt.savefig(\"纵向速度.png\")\n",
      "C:\\Users\\CHH3213\\AppData\\Local\\Temp\\ipykernel_13084\\2938634167.py:44: UserWarning: Glyph 24230 (\\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.\n",
      "  plt.savefig(\"纵向速度.png\")\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\envs\\gobigger\\lib\\site-packages\\IPython\\core\\pylabtools.py:151: UserWarning: Glyph 27178 (\\N{CJK UNIFIED IDEOGRAPH-6A2A}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\ProgramData\\Anaconda3\\envs\\gobigger\\lib\\site-packages\\IPython\\core\\pylabtools.py:151: UserWarning: Glyph 21521 (\\N{CJK UNIFIED IDEOGRAPH-5411}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\ProgramData\\Anaconda3\\envs\\gobigger\\lib\\site-packages\\IPython\\core\\pylabtools.py:151: UserWarning: Glyph 36895 (\\N{CJK UNIFIED IDEOGRAPH-901F}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\ProgramData\\Anaconda3\\envs\\gobigger\\lib\\site-packages\\IPython\\core\\pylabtools.py:151: UserWarning: Glyph 24230 (\\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\envs\\gobigger\\lib\\site-packages\\IPython\\core\\pylabtools.py:151: UserWarning: Glyph 32437 (\\N{CJK UNIFIED IDEOGRAPH-7EB5}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## 画场景示意图\n",
    "plt.figure(1)\n",
    "# 画灰色路面图\n",
    "GreyZone = np.array([[- 5,- d - 0.5],[- 5,d + 0.5],[len_line,d + 0.5],[len_line,- d - 0.5]])\n",
    "plt.fill(GreyZone[:,0],GreyZone[:,1],'gray')\n",
    "\n",
    "# 画小车\n",
    "plt.fill(np.array([state_t1[0],state_t1[0],state_t1[0] + L,state_t1[0] + L]),np.array([- d / 2 - W / 2,- d / 2 + W / 2,- d / 2 + W / 2,- d / 2 - W / 2]),'b')\n",
    "plt.fill(np.array([state_t0[0],state_t0[0],state_t0[0] - L,state_t0[0] - L]),np.array([- d / 2 - W / 2,- d / 2 + W / 2,- d / 2 + W / 2,- d / 2 - W / 2]),'y')\n",
    "# 画分界线\n",
    "plt.plot(np.array([- 5,len_line]),np.array([0,0]),'w--')\n",
    "\n",
    "plt.plot(np.array([- 5,len_line]),np.array([d,d]),'w')\n",
    "\n",
    "plt.plot(np.array([- 5,len_line]),np.array([- d,- d]),'w')\n",
    "\n",
    "# 设置坐标轴显示范围\n",
    "plt.axis('equal')\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 画换道轨迹\n",
    "plt.plot(path[:,0],path[:,1],'r--')\n",
    "plt.savefig(\"场景示意图.png\")\n",
    "\n",
    "## 分析速度\n",
    "\n",
    "# 横向速度\n",
    "plt.figure(2)\n",
    "plt.title(\"横向速度\")\n",
    "plt.plot(t,path[:,3],'k')\n",
    "plt.xlabel('time/s ')\n",
    "plt.ylabel('m/s ')\n",
    "plt.savefig(\"横向速度.png\")\n",
    "\n",
    "# 纵向速度\n",
    "plt.figure(3)\n",
    "plt.title(\"纵向速度\")\n",
    "plt.plot(t,path[:,2],'k')\n",
    "plt.xlabel('time/s ')\n",
    "plt.ylabel('m/s ')\n",
    "\n",
    "plt.savefig(\"纵向速度.png\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "0c7484b3574347463e16b31029466871583b0d4e5c4ad861e8848f2d3746b4de"
  },
  "kernelspec": {
   "display_name": "Python 3.8.12 ('gobigger')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.12"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
